As networks such as the Internet continue to expand and become more popular, users are increasingly interested in controlling remotely located devices. In some cases, remote access services are available, which enable users to access and/or control devices remotely over the Internet. For example, a user can use a remote access server to instruct a home video recorder to record a particular TV program while using a personal computer at work. For another example, a user can schedule to turn on/off an alarm system, lights, etc.
Devices that are remotely accessible through an open network like the Internet are often vulnerable to unauthorized access. To address this concern, devices in a network may be coupled to a security system, such as a hardware or software “firewall” that filters data to prevent unauthorized access of the devices. For example, a firewall router may be configured to allow the devices to transmit outbound data but not receive remotely sourced inbound traffic.
In some conventional systems, to determine whether remote access to a device is desired, the device may establish a dedicated communication connection with the remote access server and maintain the communication connection open almost indefinitely. The communication connection between the device and the remote access server may be automatically re-established if the communication connection is accidentally disconnected. Maintaining such a communication connection using a secured protocol is computationally expensive and resource consuming. Alternatively, the device may have to repeatedly poll a remote access server that handles access requests for the device in order to determine whether remote access to a device is desired. For example, in some cases a user may wish to remotely access and control the device. In other cases, the remote access server may need to directly instruct a device to perform actions such as downloading and installing a new version of a software application. For each instance in which the device polls the remote access server, the device communicates with the remote access server using a computationally expensive communication protocol, such as a Secured Socket Layer (SSL)/Transport Layer Security (TSL) protocol that requires the remote access to have an available socket for a communication connection.
Currently, most remote access services have various capacity restrictions that limit their ability to accommodate a growing need for remote access services due to increasing network size and a growing number of users and associated devices. Further, each session connection between a device and a remote access server requires significant resources of the remote access server, which makes it difficult to scale the remote access server to serve an increasing number of users and remote devices. One possible solution is to add more hardware to the remote access server to increase the computing capacity of the remote access server, but adding more hardware is costly and complicated and maintaining established connections is overlooked. Another solution is to increase the polling interval of each device to reduce the number of session connections required for the polling performed by each device. However, a longer polling interval means longer average latency in responding to an access request.
Thus, there is a need for a framework to reduce expensive communications in a network while allowing more users to quickly and securely control remote devices.